package cn.topevery.garden.entity.dto.event;

import cn.topevery.garden.entity.dto.InteractPlatformDTO;
import cn.topevery.garden.entity.po.event.EventInfoFile;
import com.alibaba.fastjson.annotation.JSONField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 案件表 DTO
 *
 * @author code-generate
 * @date 2022-08-23
 */
@Data
@Accessors(chain = true)
@ApiModel(value = "EventInfoDTO", description = "案件表 DTO")
public class EventInfoDTO implements Serializable {
    /**
     * 自增id
     */
    private Integer id;

    /**
     * 案件ID
     */
    @ApiModelProperty(value = "案件ID")
    private String evtId;

    /**
     * 行业ID
     */
    @ApiModelProperty(value = "行业ID")
    private String industryId;

    /**
     * 案件号
     */
    @ApiModelProperty(value = "案件号")
    private String code;

    /**
     * 环节实例ID
     */
    @ApiModelProperty(value = "环节实例ID")
    private String wfInstId;

    /**
     * 案件来源ID
     */
    @ApiModelProperty(value = "案件来源ID")
    private String sourceId;

    /**
     * 所属区ID
     */
    @ApiModelProperty(value = "所属区ID")
    private String districtId;

    /**
     * 所属街道ID
     */
    @ApiModelProperty(value = "所属街道ID")
    private String streetId;

    /**
     * 所属社区ID
     */
    @ApiModelProperty(value = "所属社区ID")
    private String communityId;

    /**
     * 所属标段ID
     */
    @ApiModelProperty(value = "所属标段ID")
    @NotNull(message = "标段id不可为空")
    private Integer sectionId;

    /**
     * 所属标段ID
     */
    @ApiModelProperty(value = "所属企业ID")
//    @NotNull(message = "企业id不可为空")
    private Integer companyId;

    /**
     * 公园Id
     */
    @ApiModelProperty(value = "公园Id")
    private Integer parkId;

    /**
     * 片区Id
     */
    @ApiModelProperty(value = "片区Id")
    private Integer extentId;

//    /**
//     * 问题类型
//     */
//    @ApiModelProperty(value = "问题类型")
//    private String typeId;

    /**
     * 问题大类
     */
    @ApiModelProperty(value = "问题大类")
    private String bigClassId;

    /**
     * 问题小类
     */
    @ApiModelProperty(value = "问题小类")
    private String smallClassId;

    /**
     * 是否扣分：0：否，1：是
     */
    @ApiModelProperty(value = "是否扣分：0：否，1：是")
    private Byte isKf;

    /**
     * 原始扣分值
     */
    @ApiModelProperty(value = "原始扣分值")
    private Float kfValue;

    /**
     * 实际扣分值
     */
    @ApiModelProperty(value = "实际扣分值")
    private Float actualKfValue;

    /**
     * 责任单位ID(案件最终处理企业ID/责任单位ID)
     */
    @ApiModelProperty(value = "责任单位ID(案件最终处理企业ID/责任单位ID)")
    private String lastDeptId;

    /**
     * 责任单位处理人ID
     */
    @ApiModelProperty(value = "责任单位处理人ID")
    private String deptDealPersonId;

    /**
     * 经度
     */
    @ApiModelProperty(value = "经度")
    private Double geoX;

    /**
     * 纬度
     */
    @ApiModelProperty(value = "纬度")
    private Double geoY;

    /**
     * 墨卡托X
     */
    @ApiModelProperty(value = "墨卡托X")
    private Double mercatorX;

    /**
     * 墨卡托Y
     */
    @ApiModelProperty(value = "墨卡托Y")
    private Double mercatorY;

    /**
     * 百度坐标X
     */
    @ApiModelProperty(value = "百度坐标X")
    private Double lngBd09;

    /**
     * 百度坐标Y
     */
    @ApiModelProperty(value = "百度坐标Y")
    private Double latBd09;

    /**
     * 大地2000 X
     */
    @ApiModelProperty(value = "大地2000 X")
    private Double lng2000;

    /**
     * 大地2000 Y
     */
    @ApiModelProperty(value = "大地2000 Y ")
    private Double lat2000;

    /**
     * 火星坐标 X
     */
    @ApiModelProperty(value = "火星坐标 X ")
    private Double lngGcj02;

    /**
     * 火星坐标 Y
     */
    @ApiModelProperty(value = "火星坐标 Y ")
    private Double latGcj02;

    /**
     * 案件地址
     */
    @ApiModelProperty(value = "案件地址")
    private String address;

    /**
     * 案件状态：0:刚启动的流程 1:正在办理的案件   2:已经办结的案件   -1:已经作废的案件
     */
    @ApiModelProperty(value = "案件状态：0:刚启动的流程 1:正在办理的案件   2:已经办结的案件   -1:已经作废的案件")
    private Integer status;

    /**
     * 应完成时间
     */
    @ApiModelProperty(value = "应完成时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime shouldFinishedTime;

    /**
     * 案件完结时间
     */
    @ApiModelProperty(value = "案件完结时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime finishedTime;

    /**
     * 是否超时：0：否，1：是
     */
    @ApiModelProperty(value = "是否超时：0：否，1：是")
    private Byte isTimeout;

    /**
     * 图片ID
     */
    @ApiModelProperty(value = "图片ID")
    private String photoId;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 上报时间
     */
    @ApiModelProperty(value = "上报时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime reportDate;

    /**
     * 上报人ID
     */
    @ApiModelProperty(value = "上报人ID")
    private String reportId;

    /**
     * 上报人
     */
    @ApiModelProperty(value = "上报人")
    private String reportName;

    /**
     * 上报人部门ID
     */
    @ApiModelProperty(value = "上报人部门ID")
    private String reportDeptId;

    /**
     * 上报人组ID
     */
    @ApiModelProperty(value = "上报人组ID")
    private String reportGroupId;

    /**
     * 当前环节ID
     */
    @ApiModelProperty(value = "当前环节ID")
    private String curActId;

    /**
     * 当前环节名称
     */
    @ApiModelProperty(value = "当前环节名称")
    private String curActName;

    /**
     * 当前环节时间
     */
    @ApiModelProperty(value = "当前环节时间")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime curActTime;

    /**
     * 审核结果：0：未审核，1：通过， 2：不通过
     */
    @ApiModelProperty(value = "审核结果：0：未审核，1：通过， 2：不通过")
    private Byte auditResult;

    /**
     * 审核日期
     */
    @ApiModelProperty(value = "审核日期")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime auditDate;

    /**
     * 审核意见
     */
    @ApiModelProperty(value = "审核意见")
    private String auditOptions;

    @ApiModelProperty(value = "案件办理时限：单位秒")
    private Integer handleLimit;

    @ApiModelProperty(value = "附件")
    private List<EventInfoFile> fileList;

    @ApiModelProperty(value = "问题类型")
    @NotEmpty(message = "问题类型不能为空")
    private List<String> typeList;

    private List<InteractPlatformDTO> dtoList;

    @ApiModelProperty(value = "案件执行人id")
    private String executorId;

    @ApiModelProperty(value = "案件执行人id")
    private String executor;
}
